home *** CD-ROM | disk | FTP | other *** search
/ AmigActive 23 / AACD 23.iso / AACD / Programming / tek / list / seeknode.c < prev   
C/C++ Source or Header  |  2001-05-12  |  689b  |  51 lines

  1.  
  2. #include "tek/list.h"
  3.  
  4. /*
  5. **    TEKlib
  6. **    (C) 2001 TEK neoscientists
  7. **    all rights reserved.
  8. **
  9. **    TNODE *TSeekNode(TNODE *node, TINT steps)
  10. **
  11. **    starting at the given node, seek in the list by
  12. **    a given number of steps, and return the node
  13. **    reached, or TNULL if seeked past end or before start
  14. **
  15. */
  16.  
  17. TNODE *TSeekNode(TNODE *node, TINT steps)
  18. {
  19.     TNODE *nextnode;
  20.  
  21.     if (steps > 0)
  22.     {
  23.         while ((nextnode = node->succ))
  24.         {
  25.             if (steps-- == 0)
  26.             {
  27.                 return node;
  28.             }
  29.  
  30.             node = nextnode;
  31.         }
  32.  
  33.         return TNULL;
  34.     }
  35.     else if (steps < 0)
  36.     {
  37.         while ((nextnode = node->pred))
  38.         {
  39.             if (steps++ == 0)
  40.             {
  41.                 return node;
  42.             }
  43.  
  44.             node = nextnode;
  45.         }
  46.         return TNULL;
  47.     }
  48.     
  49.     return node;
  50. }
  51.